Namespace PeriodProcessing

    ''' <summary>
    ''' Interface for processing Satisfied Diploma requirements for a student
    ''' </summary>
    Public Interface IStudentSatisfiedDiplomaReqs

        Function isDiplomaEarned() As Boolean


        ''' <summary>
        ''' The diploma type we are working on
        ''' </summary>
        ReadOnly Property diplomaType As DiplomaType

        ''' <summary>
        ''' The student object we are working on
        ''' </summary>
        ReadOnly Property Student As Student


        ''' <summary>
        ''' The list of diploma requirements satisified by the student
        ''' </summary>
        ReadOnly Property SatisfiedRequirements As List(Of DiplomaSatisfiedRequirement)

        ''' <summary>
        ''' adds a certificate or any other kind of entity that satisfies a diploma requirement
        ''' to the internal list SatisfiedRequirements
        ''' </summary>
        ''' <param name="certReq"></param>
        ''' <remarks></remarks>
        Sub addSatifiedDiplomaRequirement(ByVal certReq As DiplomaSatisfiedRequirement)

    End Interface
End Namespace
